#include "ExpirationNIC.h"
#include "ui_ExpirationNIC.h"

extern QSqlDatabase enjoylifedb;
extern QSqlRelationalTableModel *expNIC_model;
extern QTableView *expNIC_view;

ExpirationNIC::ExpirationNIC(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ExpirationNIC)
{
   ui->setupUi(this);
//    setWindowTitle("Vencimientos NIC");
    setWindowFlags(Qt::WindowCloseButtonHint);
//    setWindowIcon(QIcon("://Icons/logo_principal.png"));

    ui->label_dateA->setEnabled(false);
    ui->fecha_alta_nic->setEnabled(false);
    ui->label_dateV->setEnabled(false);
    ui->fecha_vencimiento_nic->setEnabled(false);
    ui->editarBtn->setEnabled(true);
    ui->guardarBtn->setEnabled(false);
}

ExpirationNIC::~ExpirationNIC()
{
    delete ui;
}

void ExpirationNIC::on_guardarBtn_clicked()
{
    QMessageBox::StandardButton button;
    button = QMessageBox::question(this, tr("Vencimiento Dominio"),
                                   "¿Está seguro que quiere guardar los cambios"
                                   "realizados al dominio " + ui->dominio->text() + "?",
                                   QMessageBox::Yes | QMessageBox::No);

    if (button == QMessageBox::Yes) {
        expNIC_model->setEditStrategy(QSqlTableModel::OnManualSubmit);

        QString filter = "id_dominio = '" + idDomain + "'";
        expNIC_model->setFilter(filter);
        enjoylifedb.transaction();
        expNIC_model->select();

        if (expNIC_model->rowCount() == 1) {
            QSqlRecord record;
            record.setValue("val_dominio", ui->dominio->text());
            if (ui->principal->isChecked())
                record.setValue("es_primaria", "1");
            else
                record.setValue("es_primaria", "0");
            record.setValue("fecha_alta_nic", ui->fecha_alta_nic->text());
            record.setValue("fecha_vencimiento_nic", ui->fecha_vencimiento_nic->text());



            //        QSqlQuery *query = new QSqlQuery(enjoylifedb);
            //        QString stm;

            //        stm = stm + "val_dominio = '" + ui->dominio->text() + "', ";

            //        if (ui->principal->isChecked())
            //            stm = stm + "es_primaria = '0', ";
            //        else
            //            stm = stm + "es_primaria = '1', ";

            //        stm = stm + "fecha_alta_nic = '" + ui->fecha_alta_nic->text() + "', ";

            //        stm = stm + "fecha_vencimiento_nic = '" + ui->fecha_vencimiento_nic->text() + "'";

            //        qDebug() << "Valore a guardar: " << stm;

            //        if (! query->exec("update dominio set " + stm + " where id_dominio = '" + idDomain + "'")) {
            //            QString error = query->lastError().text();
            //            QMessageBox::critical(this,"Error!", tr("No se pudo insertar el dominio, intentelo de nuevo."
            //                                                    "\n %1").arg(error));
            //            enjoylifedb.rollback();
            //            return;
            //        }

            expNIC_model->setRecord(0, record);
            enjoylifedb.transaction();
            if (!expNIC_model->submitAll()) {
                QString error = expNIC_model->lastError().text();
                QMessageBox::critical(this,"Error!", tr("No se pudo guardar los cambios realizados, intentelo de nuevo."
                                                        "\n %1").arg(error));
                enjoylifedb.rollback();
                return;
            }
            enjoylifedb.commit();
        }

        ui->editarBtn->setEnabled(false);
        ui->guardarBtn->setEnabled(false);
        ui->label_dateA->setEnabled(false);
        ui->fecha_alta_nic->setEnabled(false);
        ui->label_dateV->setEnabled(false);
        ui->fecha_vencimiento_nic->setEnabled(false);
    }
    else
        return;
    close();
}

void ExpirationNIC::GetClientDomainsInfo(QString raz_soc)
{
    QSqlQuery *query = new QSqlQuery(enjoylifedb);
    QString stm = "select nro_cliente,logo_cliente from cliente where razon_social = ";
    stm.append("\'");
    stm.append(raz_soc);
    stm.append("\'");

    if (! query->exec(stm)) {
        QMessageBox::critical(this,"Error!", "No se pudieron recuperar los registros, "
                              "intentelo de nuevo || " + query->lastError().text());
        return;
    }

    while (query->next()) {
        ui->nro_cliente->setText(query->value(query->record().indexOf("nro_cliente")).toString());
        ui->razon_social->setText(raz_soc);

        QPixmap* pixmap = new QPixmap();
        pixmap->loadFromData(QByteArray::fromBase64(query->value(query->record().indexOf("logo_cliente")).toByteArray()));

        if (!pixmap->isNull())
            ui->logo_cliente->setPixmap(*pixmap);
    }

    QSqlQuery *query2 = new QSqlQuery(enjoylifedb);
    QString stm2 = "select id_dominio,val_dominio,es_primaria,fecha_alta_nic,fecha_vencimiento_nic from dominio where d_razon_social = ";
    stm2.append("\'");
    stm2.append(raz_soc);
    stm2.append("\'");

    if (! query2->exec(stm2)) {
        QMessageBox::critical(this,"Error!", "No se pudieron recuperar los registros, "
                              "intentelo de nuevo || " + query2->lastError().text());
        return;
    }

    while (query2->next()) {
        idDomain = query2->value(query2->record().indexOf("id_dominio")).toString();
        ui->dominio->setText(query2->value(query2->record().indexOf("val_dominio")).toString());
        if (query2->value(query2->record().indexOf("es_primaria")).toInt() == 1)
            ui->principal->setChecked(true);
        else
            ui->secundario->setChecked(true);
        ui->fecha_alta_nic->setDate(query2->value(query2->record().indexOf("fecha_alta_nic")).toDate());
        ui->fecha_vencimiento_nic->setDate(query2->value(query2->record().indexOf("fecha_vencimiento_nic")).toDate());
    }
    ui->tipo_dominio->setDisabled(true);
}

void ExpirationNIC::on_editarBtn_clicked()
{
    ui->label_dateA->setEnabled(true);
    ui->fecha_alta_nic->setEnabled(true);
    ui->label_dateV->setEnabled(true);
    ui->fecha_vencimiento_nic->setEnabled(true);
    ui->fecha_alta_nic->setFocus();
    ui->guardarBtn->setEnabled(true);
    connect(ui->fecha_alta_nic,SIGNAL(dateChanged(QDate)),this,SLOT(CalculateNICExpirationDate()));
}

void ExpirationNIC::CalculateNICExpirationDate()
{
    QDate dateV = ui->fecha_alta_nic->date();
    dateV.setDate(dateV.year() + 1, dateV.month(), dateV.day());
    ui->fecha_vencimiento_nic->setDate(dateV);
}

void ExpirationNIC::on_cerrarBtn_clicked()
{
    close();
}

